package br.edu.ifrn.view;

import java.util.List;

import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

import br.edu.ifrn.controller.CategoriaUsuarioEJBLocal;
import br.edu.ifrn.exeption.CategoriaUsuarioException;
import br.edu.ifrn.model.CategoriaUsuario;

@ManagedBean
@ViewScoped
public class CategoriaUsuarioMBean {
	
	private CategoriaUsuario categoriaUsuario;
	private List<CategoriaUsuario> listaCategoria;
	
	public CategoriaUsuarioMBean() {
		categoriaUsuario = new CategoriaUsuario();
	}
	
	@EJB
	private CategoriaUsuarioEJBLocal categoriaEJB;
	
	@PostConstruct
    public void construct() {
		listaCategoria = categoriaEJB.listar();
    }
	
	public String index() {
		return "/categoriaUsuario/index.xhtml";
	}
	
	public List<CategoriaUsuario> getListaCategoriaUsuario(){
		return listaCategoria;
	}

	public CategoriaUsuario getCategoriaUsuario() {
		return categoriaUsuario;
	}
	
	public CategoriaUsuario findCategoriaUsuario(Long id) {
		return categoriaEJB.find(id);
	}
	
	public void setCategoriaUsuario(CategoriaUsuario categoriaUsuario) {
		this.categoriaUsuario = categoriaUsuario;
	}
	
	public String actionSalvar() {
		try {
			categoriaEJB.salvar(categoriaUsuario);
			FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Categoria de usuário cadastrada com sucesso", null));
		} catch (Exception e) {
			FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Categoria de usuário não cadastrada, tente novamente", null));
		}
		
		return index();
	}
	
	public String actionRemover() {
		try {
			categoriaEJB.remover(categoriaUsuario);
			FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Categoria de usuário removida com sucesso", null));
		} catch (CategoriaUsuarioException e) {
			e.printStackTrace();
			FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, e.getMessage(), null));
		}
		return index();
	}
	
	public void actionLimpar() {
		categoriaUsuario = new CategoriaUsuario();
	}
}
